<html>
<head>
<script src="../../../resources/js-test.js"></script>
<style>
    .visible { position: absolute; }
    .hidden { position: relative; display: none; }
</style>
</head>
<body>
    <div id="test">Tests that getComputedStyle returns length properties with a unit.</div>
    <div id="console"></div>
    <script>
        var propertiesToCheck = {
            "background-position": "10px 10px",
            "background-size": "400px 300px",
            "-webkit-border-horizontal-spacing": "10px",
            "-webkit-border-vertical-spacing": "10px",

            "border-top-width": "2px",
            "border-right-width": "2px",
            "border-bottom-width": "2px",
            "border-left-width": "2px",
            "border-top-left-radius": "5px",
            "border-top-right-radius": "5px",
            "border-bottom-left-radius": "5px",
            "border-bottom-right-radius": "5px",

            "outline-width": "2px",

            "-webkit-column-rule-width": "10px",
            "-webkit-column-width": "80px",
            "-webkit-column-gap": "20px",

            "-webkit-mask-position": "10px 10px",
            "-webkit-mask-size": "10px 10px",
            "-webkit-perspective": "400px",
            "-webkit-perspective-origin": "20px 20px",
            "-webkit-text-stroke-width": "2px",
            "-webkit-transform-origin": "10px 10px",

            "left": "20px",
            "top": "20px",
            "right": "50px",
            "bottom": "50px",

            "font-size": "20px",
            "width": "400px",
            "max-width": "900px",
            "min-width": "200px",
            "height": "250px",
            "max-height": "600px",
            "min-height": "200px",
            "letter-spacing": "2px",
            "word-spacing": "10px",

            "margin-top": "10px",
            "margin-right": "10px",
            "margin-bottom": "10px",
            "margin-left": "10px",

            "padding-top": "10px",
            "padding-right": "10px",
            "padding-bottom": "10px",
            "padding-left": "10px",
            
            "text-indent": "10px"
        };

        var testElement = document.getElementById('test');
        for (var propertyName in propertiesToCheck)
            testElement.style[propertyName] = propertiesToCheck[propertyName];
        
        function testPropertyUnit(className, propertyName)
        {
            if (testElement.className != className)
                testElement.className = className;
            var computedStyled = document.defaultView.getComputedStyle(testElement);
            var results = /\d+([a-z%]+)/.exec(computedStyled[propertyName]);
            return results ? results[1] : '';
        }

        for (var propertyName in propertiesToCheck)
            shouldBe("testPropertyUnit('visible', '" + propertyName + "')", "'px'");
        for (var propertyName in propertiesToCheck)
            shouldBe("testPropertyUnit('hidden', '" + propertyName + "')", "'px'");

        for (var propertyName in propertiesToCheck)
            testElement.style[propertyName] = '';
    </script>
</body>
</html>
